SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROC [dbo].[SP_TXMVTO_CNTB_Q55]          
/*-------------------------------------------------------------------*/                              
/*----- Empresa           : OFISIS S.A.                          ----*/                              
/*----- Cliente           : OFISIS S.A.                          ----*/                              
/*----- Sistema           : Contabilidad                         ----*/                              
/*----- Modulo            : Empresa                              ----*/                              
/*----- Programa          : Registro de Compras RS 034-2006      ----*/                              
/*----- Nombre            : SP_TXMVTO_CNTB_Q55                   ----*/                              
/*----- Script            : TXMVTO_CNTB                          ----*/                              
/*----- Desarrollado por  : PDGV                                 ----*/                              
/*----- Fecha  Creaci?n   : 22/08/2006                           ----*/                              
/*----- Base de Datos     : MS SQL Server                        ----*/                              
/*----- Version BD        : 8.0                                  ----*/                              
/*-------------------------------------------------------------------*/                               
/*------ modif            : PDGV                                 ----*/        
/*------ fecha modif      : 12/04/2007                           ----*/        
/*------ detalle modif    : trabaja con parametro para ver si empresa retiene o no a sus proveedores --*/        
/*-------------------------------------------------------------------*/                       
/*-------------------------------------------------------------------*/                               
/*------ modif            : PDGV                                 ----*/        
/*------ fecha modif      : 12/08/2010                           ----*/        
/*------ detalle modif    : correccion caso el reporte se saca para contabilidad 2
y la cuenta 40 es soles con control de moneda en S
--*/        
/*-------------------------------------------------------------------*/                       
/*----- Drop proc SP_TXMVTO_CNTB_Q55                             ----*/          
/*----- Grant all on SP_TXMVTO_CNTB_Q55 to PUBLIC                ----*/                              
/*-----           
EXEC SP_TXMVTO_CNTB_Q55 '01', ' ',1,2008, 8, 8, 'ANA','FEC','OFI'     
----*/          
/*-------------------------------------------------------------------*/                              
@ISCO_EMPR        TD_VC_002,                              
@ISCA_WHER_LOCA   TD_VC_255,                              
@INNU_CNTB_EMPR   TD_IN_001_CONT,                              
@INNU_ANNO        TD_IN_004_ANNO,                              
@INNU_MESE_INIC   TD_IN_002_MESE,                              
@INNU_MESE_FINA   TD_IN_002_MESE,                              
@ISTI_REPO        TD_VC_003,                              
@ISTI_ORDE_REPO   TD_VC_003,                              
@ISTI_INFO        TD_VC_003                              
As          
Declare                               
@VSNU_ASTO_BASE   char(18),                              
@VSCO_MONE_BASE   TD_VC_003,                     
@VSCO_MONE_BAS1   TD_VC_003,                              
@VNIM_TOTA_BASX   TD_NU_016_004,                              
@VNIM_TOTA_BASY   TD_NU_016_004,                              
@VDFE_DOCU   TD_DT_001,                              
@VSTI_DOCU_CNTB   TD_VC_003,                              
@VSNU_DOCU   TD_VC_020,                              
@VSCO_UNID   TD_VC_003,                              
@VSCO_OPRC   TD_VC_003,                              
@VSNU_ASTO   TD_VC_010,                              
@VSCO_PROV   TD_VC_020,                              
@VSNO_CORT_PROV   TD_VC_050,                              
@VSCO_DOCU_SUNA   TD_VC_003,     
@VSNU_DOCU_SUNA   TD_VC_020,                              
@VSTI_DOCU_NDOM   TD_VC_003,     
@VSNU_DOCU_NDOM   TD_VC_020,                              
@VSCO_MONE   TD_VC_003,                              
@VNIM_INAF_ORIX   TD_NU_016_004,                              
@VNIM_AFEC_ORIX   TD_NU_016_004,                              
@VNIM_IIGV_ORIX   TD_NU_016_004,                              
@VNIM_TRIB_ORIX   TD_NU_016_004,                         
@VNIM_RENT_ORIX   TD_NU_016_004,                              
@VNIM_TOTA_ORIX   TD_NU_016_004,                              
@VNIM_INAF_CNTX   TD_NU_016_004,                              
@VNIM_AFEC_CNTX   TD_NU_016_004,                              
@VNIM_IIGV_CNTX   TD_NU_016_004,                              
@VNIM_TRIB_CNTX   TD_NU_016_004,                              
@VNIM_RENT_CNTX   TD_NU_016_004,                              
@VNIM_TOTA_CNTX   TD_NU_016_004,                              
@VNFA_CAMB   TD_NU_009_004,                              
@VNIM_IIGV_ORIG   TD_NU_016_004,                              
@VNIM_TRIB_ORIG   TD_NU_016_004,                              
@VNIM_RENT_ORIG   TD_NU_016_004,                              
@VNIM_TOTA_ORIG   TD_NU_016_004,                              
@VNIM_IIGV_CNTB   TD_NU_016_004,                              
@VNIM_TRIB_CNTB   TD_NU_016_004,                              
@VNIM_RENT_CNTB   TD_NU_016_004,                            
@VNIM_TOTA_CNTB   TD_NU_016_004,                              
                              
@CNPO_IGV1        TD_NU_009_004,                              
@CNPO_IGV2   TD_NU_009_004,                              
@CNPO_REN1   TD_NU_009_004,            
@CNPO_REN2 TD_NU_009_004,                              
                              
@VSCO_OPR1   TD_VC_003,                              
@VSCO_OPR2   TD_VC_003,                              
@VSID_COMP    TD_VC_003,                              
@VSID_IIGV    TD_VC_003,                              
@VSID_FONA    TD_VC_003,                          
@VSID_RENT    TD_VC_003,                              
@VSID_CUAR    TD_VC_003,                              
@VSID_TRIB    TD_VC_003,    
@VSTI_DOCU_AUXI   char(06),                              
@VSCO_SUNA        TD_VC_002,                              
@CSID_CNTA    TD_VC_003,                              
@CDFE_DOCU   TD_DT_001,                              
@CSTI_DOCU_CNTB   TD_VC_003,                              
@CSNU_DOCU   TD_VC_020,    
@CSCO_UNID   TD_VC_003,                              
@CSCO_OPRC   TD_VC_003,                              
@CSCO_AUXI   TD_VC_020,                              
@CSCN_CNTB_EMPR   TD_VC_010,                              
@CSTI_OPER_CNTB   TD_VC_003,                              
@CSCO_MONE    TD_VC_003,                              
@CNFA_CAMB    TD_NU_009_004,                              
@CNIM_MVTO_ORIG   TD_NU_016_004,    
@CNIM_MVTO_CNTB   TD_NU_016_004,    
@CSTI_DOCU_DETR   TD_VC_003,    
@CSNU_DOCU_DETR   TD_VC_020,    
@CDFE_DOCU_DETR   TD_DT_001,    
@CSTI_DOCU_REFE   TD_VC_003,    
@CSNU_DOCU_REFE   TD_VC_020,    
@CDFE_DOCU_REFE   TD_DT_001,    
@VSNO_DOCU        TD_VC_050,    
@CSTI_AUXI_EMPR   TD_VC_001,    
@VSST_RETE_DOCU   TD_VC_001,    
@VSST_RETE_AUXI   TD_VC_001,    
@VNIM_MAXI_NRET   TD_NU_016_004,    
@VSST_STAT        TD_VC_001,    
@VSST_BCON_AUXI   TD_VC_001,    
@VSST_DETR        TD_VC_001,    
@VSNU_DOCU_DETR   TD_VC_020,    
@VDFE_DOCU_DETR   TD_DT_001,    
@VSTI_DOCU_REFE   TD_VC_003,    
@VSNU_DOCU_REFE   TD_VC_020,    
@VDFE_DOCU_REFE   TD_DT_001,    
@VNIM_MVTO_CNTB   TD_NU_016_004,    
@CSNU_ASTO    TD_VC_010,                              
@CSCO_OPRC_CNTB   TD_VC_003,                              
@VNIM_TOTA    TD_NU_016_004,                              
@CSCO_UNID_CNTB   TD_VC_003,                              
----------------------------------------                              
@VSNU_CNTB_EMPR  TD_VC_001,                              
@VSNU_ANNO       TD_VC_004,                              
@VSNU_MESE_INIC  TD_VC_002,                              
@VSNU_MESE_FINA  TD_VC_002,                              
@VSCO_SUNA_NOCR  TD_VC_002,                              
@VSCO_SUNA_0001  TD_VC_002,                              
@VNNU_MESE       TD_IN_002_MESE,                 
@CNNU_MESE       TD_IN_002_MESE,                              
                              
@VNPO_IGV1       TD_NU_009_004,                              
@VNPO_IGV1_ANNO  TD_NU_009_004,                              
@VNPO_IGV2   TD_NU_009_004,              
@VNPO_IGV2_ANNO  TD_NU_009_004,                              
@VNPO_REN1       TD_NU_009_004,                              
@VNPO_REN2       TD_NU_009_004,                              
@VSTI_DOCU   TD_VC_003,                            
@VDFE_DOCU_0001  TD_DT_001,               
@VSNU_DOCU_0001  TD_VC_020,                            
                          
@VNPO_IGV1_0001        TD_NU_009_004, --segun el tipo de igv                       
@CSCO_EMPR   TD_VC_002,  -- para la empresa                          
    
@VNID_IIES TD_IN_001, -- ID IES                        
@VNID_IIGV TD_IN_001, -- ID IGV                        
@VNID_COMP TD_IN_001, -- ID COMPRAS                        
@VNID_RENT TD_IN_001, -- ID IMP. RENTA                        
@VNID_NDOM TD_IN_001, -- ID IMP. RENTA NO DOMICILIADO          
@VNID_GAST TD_IN_001, -- ID GASTO NO GRAVABLE      
@VNID_OTRO TD_IN_001, -- ID OTROS TRIBUTOS    
@VNID_NGRA TD_IN_001, -- ID GASTO NO GRAVABLE      
@VNIM_OTRO_TRIB_CONT    TD_NU_016_004,  -- IMPORTE IES                        
@VNIM_IIES_ORIG TD_NU_016_004,  -- IMPORTE IES                        
@VNIM_IIES_CNTX TD_NU_016_004,  -- IMPORTE IES                        
@VNIM_TOTA_ORIG_AUXI TD_NU_016_004,   -- IMPORTE IES                        
@VNIM_TOTA_CNTB_AUXI TD_NU_016_004,   -- IMPORTE IES                        
@CDFE_ASTO_CNTB TD_DT_001,          
@VDFE_ASTO_CNTB TD_DT_001,                   
@CSTI_CAMB TD_VC_003,                       
@VSTI_CAMB_BASE TD_VC_003,  --- ES DE LA CTA '42X'                      
@VNIM_0001 TD_NU_016_004,                     
@VSCO_EMPR_0001 TD_VC_002,                     
                    
/*-----*/                      
@VNIM_TOTA_CONT TD_NU_016_004,                    
@VNIM_IIGV_CONT TD_NU_016_004,                    
@VNIM_CONT_BASX TD_NU_016_004,                                   
@VNIM_CONT_BASY TD_NU_016_004,              
@VNIM_AFEC_CONX TD_NU_016_004,                    
@VNIM_INAF_CONX TD_NU_016_004,             
@VNIM_TRIB_CONT TD_NU_016_004,                     
@VNIM_TOTA_CONT_AUXI TD_NU_016_004,                 
          
@VNIM_GAST_ORIG TD_NU_016_004,                 
@VNIM_GAST_CONT TD_NU_016_004,                
@CSST_CNTA_CAMB TD_VC_003,          
@VSID_GAST_NGRA TD_VC_003,          
@VSCO_SUNA_VARI TD_VC_002,          
@VDFE_VENC_PAGO TD_DT_001,          
@VSCO_SUNA_LIQU TD_VC_002,          
@VSCO_SUNA_POLI TD_VC_002,          
@VSCO_SUNA_SERV TD_VC_002,          
@VDFE_PAGO      TD_DT_001,          
@CDFE_DOCU_VENC TD_DT_001,          
@VSTI_PERS_SUNA TD_VC_003,     
@VSST_COMP      TD_VC_003,     
@CSST_COMP      TD_VC_003,     
@VSST_NDOM      TD_VC_001,    
@VSTI_DOCU_SURE TD_VC_003,    
@VNIM_GRAV_CNTX TD_NU_016_004,    
@VNIM_GRAV_IGVX TD_NU_016_004,    
@VNIM_NGRA_CNTX TD_NU_016_004,    
@VNIM_NGRA_IGVX    TD_NU_016_004,    
@VNIM_SDCF_CNTX    TD_NU_016_004,    
@VNIM_SDCF_IGVX    TD_NU_016_004    
    
Create Table #TWMVTO_CNTB_Q55_1                              
(CO_EMPR     varchar(5)    NULL, --para el crosstab                          
 FE_DOCU        datetime       NULL,                              
 FE_VENC_PAGO   DateTime    NULL,    
 TI_DOCU_SUNA   char(02)       NULL,                              
 TI_DOCU_CNTB   char(03)       NULL,                              
 NO_DOCU        varchar(50)    NULL,                              
 NU_DOCU        char(20)       NULL,                              
 CO_UNID_CNTB   char(03)       NULL,                              
 CO_OPRC        char(03)       NULL,                              
 NU_ASTO        char(10)       NULL,                              
 CO_PROV  varchar(20)    NULL,                              
 NO_CORT_PROV   char(50)       NULL,                              
 CO_DOCU_SUNA   char(03)       NULL,                              
 NU_DOCU_SUNA   char(20)       NULL,                              
 CO_MONE        char(03)       NULL,                              
 FA_CAMB        Numeric(9,4)   NULL,                              
 IM_AFEC_ORIG   Numeric(16,4)  NULL,                              
 IM_IIGV_ORIG   Numeric(16,4)  NULL,                              
 IM_INAF_ORIG   Numeric(16,4)  NULL,                              
 IM_TOTA_ORIG   Numeric(16,4)  NULL,                                                       
    
 IM_AFEC_CNTB   Numeric(16,4)  NULL,                              
 IM_IIGV_CNTB   Numeric(16,4)  NULL,                              
 IM_BASE_NGRA   Numeric(16,4)  NULL,                              
 IM_IIGV_NGRA   Numeric(16,4)  NULL,                              
 IM_BASE_SDCF   Numeric(16,4)  NULL,                              
 IM_IIGV_SDCF   Numeric(16,4)  NULL,                         
 IM_INAF_CNTB   Numeric(16,4)  NULL,                              
 IM_OTRO_TRIB Numeric(16,4)  NULL,    
    
 IM_TOTA_CNTB   Numeric(16,4)  NULL,                              
    
 IM_IIGV_IISC   Numeric(16,4)  NULL,                                                                     
     
 ST_RETE_AUXI   Char(01)       NULL,                              
 ST_RETE_DOCU   Char(01)       NULL,                              
 ST_RETE_BCON   Char(01)       NULL,                              
 ST_STAT        Char(1)        NULL,                              
 ST_NDEB        Char(01)       NULL,                              
 TI_DOCU_SURE   char(02)       NULL,                              
 NU_DOCU_REFE   VarChar(20)    NULL,                              
 FE_DOCU_REFE   datetime       NULL,                             
 NU_DOCU_DETR   VarChar(20)    NULL,                              
 FE_DOCU_DETR   datetime       NULL,                             
 ST_DETR        Varchar(2)     NULL,                          
 PO_IMPT        Numeric(9,4)   NULL, --para el tipo de impuesto 18,19..                          
 ST_NDOM     Char(01)       NULL    
 )                              
    
/*----- Inicializando las variables -----*/                              
Select @VNIM_AFEC_CONX = 0.00                                               
Select @VNIM_IIGV_CONT = 0.00    
Select @VNIM_INAF_CONX = 0.00    
Select @VNIM_OTRO_TRIB_CONT = 0.00    
Select @VNIM_TRIB_CONT = 0.00                    
Select @VNIM_TOTA_CONT_AUXI = 0.00                    
Select @VNIM_TOTA_CONT = 0.00                    
    
Select @VNIM_IIGV_ORIG = 0.00   Select @VNIM_TRIB_ORIG = 0.00                              
Select @VNIM_RENT_ORIG = 0.00   Select @VNIM_TOTA_ORIG = 0.00                              
Select @VDFE_DOCU      = Null   Select @VSTI_DOCU_CNTB = Null                              
Select @VSNU_ASTO      = Null   Select @VSCO_PROV      = Null                              
Select @VSNO_CORT_PROV = Null   Select @VSNU_DOCU_SUNA = Null                              
Select @VSCO_MONE      = Null   Select @VNIM_AFEC_ORIX = 0.00                              
Select @VNIM_INAF_ORIX = 0.00   Select @VNIM_IIGV_ORIX = 0.00                              
Select @VNIM_TRIB_ORIX = 0.00   Select @VNIM_RENT_ORIX = 0.00                              
Select @VNIM_TOTA_ORIX = 0.00   Select @VNIM_AFEC_CNTX = 0.00                              
Select @VNIM_INAF_CNTX = 0.00   Select @VNIM_IIGV_CNTX = 0.00                              
Select @VNIM_TRIB_CNTX = 0.00   Select @VNIM_RENT_CNTX = 0.00                            
Select @VNIM_TOTA_ORIX = 0.00   Select @VNFA_CAMB      = 0.00                              
Select @VNIM_MAXI_NRET = 0.00           
Select @VDFE_DOCU_DETR = Null   Select @VSNU_DOCU_DETR = Null    
Select @VSCO_SUNA_NOCR = Null   Select @VNPO_IGV1_0001 = 0.00                        
Select @VNIM_IIES_ORIG = 0.00                      
Select @VNIM_IIES_CNTX = 0.00                       
Select @VSTI_CAMB_BASE = NULL                        
Select @VDFE_ASTO_CNTB = NULL                        
Select @VSID_GAST_NGRA = ''          
Select @VNIM_GAST_CONT = 0          
Select @VNIM_GAST_ORIG = 0          
Select @VDFE_VENC_PAGO = NULL            
Select @VSTI_PERS_SUNA = NULL          
Select @VNIM_TOTA_ORIG_AUXI = 0        
SELECT @VSTI_DOCU_NDOM = ''     
SELECT @VSST_NDOM = ''    
                            
/*-- Obteniendo datos de Nro. de Contabilidad  -----*/                              
Select @VSCO_MONE_BAS1 = CO_MONE,                              
       @VSID_COMP      = ID_COMP,                      
       @VSID_IIGV      = ID_IMPT_VENT,                               
       @VSID_FONA      = ID_FONA,                               
       @VSID_TRIB    = IsNull(ID_TRIB,''),                         
       @VSID_RENT      = ID_CUAR,          
       @VSID_GAST_NGRA = IsNull(ID_GAST_NGRA,'')          
From  TTCNTB_EMPR                              
Where CO_EMPR = @ISCO_EMPR                               
And   NU_CNTB_EMPR = @INNU_CNTB_EMPR                        
    
Select @VSST_STAT ='N'   -- Almacena Flag que indica si empresa es agente retenedor o no                                 
Select @VNIM_MAXI_NRET = IM_MAXI_NRET,                             
@VSCO_SUNA_NOCR = CO_SUNA_NOCR,          
@VSCO_SUNA_LIQU = IsNull(Rtrim(Ltrim(CO_SUNA_LIQU)),''),          
@VSCO_SUNA_POLI = IsNull(Rtrim(Ltrim(CO_SUNA_POLI)),''),          
@VSCO_SUNA_SERV = IsNull(Rtrim(Ltrim(CO_SUNA_SERV)),''),    
@VSST_STAT = IsNull(ST_RETE_IGV1,'N')    
From TMPARA_CONT                              
Where CO_EMPR = @ISCO_EMPR                              
    
Select @CNPO_IGV1 = 0.00  Select @CNPO_IGV2 = 0.00                              
Select @CNPO_REN1 = 0.00  Select @CNPO_REN2 = 0.00                              
                              
/*----- Cursor para el reporte de Registro de Compras -----*/                              
Select @VSNU_CNTB_EMPR = Convert(Varchar(1),@INNU_CNTB_EMPR)                              
Select @VSNU_ANNO = Convert(Varchar(4),@INNU_ANNO )                         
Select @VSNU_MESE_INIC = Convert(Varchar(2),@INNU_MESE_INIC )                              
Select @VSNU_MESE_FINA = Convert(Varchar(2),@INNU_MESE_FINA )                              
                            
-- OBTENGO EL IGV ANTES DE DEFINIR EL CURSOR                            
SELECT @VNPO_IGV1_ANNO = PO_IMPT_VEN1,                            
       @VNPO_IGV2_ANNO = PO_IMPT_VEN2,                             
       @VNPO_REN1 = PO_IMPT_REN1,                            
       @VNPO_REN2 = PO_IMPT_REN2                            
From  TTPORC_IMPT                            
Where CO_EMPR = @ISCO_EMPR                            
And   NU_ANNO = @INNU_ANNO                   
And   NU_MESE = @INNU_MESE_FINA                            
                            
If @VNPO_IGV1_ANNO IS Null                            
 Select @VNPO_IGV1_ANNO = 0.00                            
If @VNPO_IGV2_ANNO IS Null                            
 Select @VNPO_IGV2_ANNO = 0.00                            
If @VNPO_REN1 IS Null                            
 Select @VNPO_REN1 = 0.00                            
If @VNPO_REN2 IS Null                            
 Select @VNPO_REN2 = 0.00                            
                        
Select @VNID_IIES = 0                          
Select @VNID_RENT = 0                        
Select @VNID_NDOM = 0                        
Select @VNID_GAST = 0                        
          
Exec('Declare CU_TXMVTO_CNTB_Q20_1 Cursor For    
Select  TXMVTO_CNTB.FE_DOCU, TXMVTO_CNTB.TI_DOCU, TXMVTO_CNTB.NU_DOCU, TXMVTO_CNTB.CO_UNID_CNTB,    
TXMVTO_CNTB.CO_OPRC_CNTB, TXMVTO_CNTB.NU_MESE, TXMVTO_CNTB.NU_ASTO, TXMVTO_CNTB.TI_AUXI_EMPR,    
TXMVTO_CNTB.CO_AUXI_EMPR, TXMVTO_CNTB.CO_CNTA_EMPR, TXMVTO_CNTB.TI_OPER, TXMVTO_CNTB.CO_MONE,    
TXMVTO_CNTB.FA_CAMB, TXMVTO_CNTB.IM_MVTO_ORIG, TXMVTO_CNTB.IM_MVTO_CNTB, TTIDEN_CNTA.ID_CNTA,    
IsNull(TTPORC_IMPT.PO_IMPT_REN1,0), IsNull(TTPORC_IMPT.PO_IMPT_REN2,0),    
IsNull(TTPORC_IMPT.PO_IMPT_VEN1,0), IsNull(TTPORC_IMPT.PO_IMPT_VEN2,0),    
TXMVTO_CNTB.TI_DOCU_DETR, TXMVTO_CNTB.NU_DOCU_DETR, TXMVTO_CNTB.FE_DOCU_DETR,    
TXMVTO_CNTB.CO_EMPR, TXMVTO_CNTB.FE_ASTO_CNTB, TXMVTO_CNTB.TI_CAMB, TMPLAN_ANNO.ST_CNTA_CAMB,    
TXMVTO_CNTB.FE_DOCU_VENC, TXMVTO_CNTB.ST_COMP, TXMVTO_CNTB.TI_DOCU_REFE, TXMVTO_CNTB.NU_DOCU_REFE,    
TXMVTO_CNTB.FE_DOCU_REFE    
From TXMVTO_CNTB    
Left Outer Join TTPORC_IMPT    
On TTPORC_IMPT.CO_EMPR = TXMVTO_CNTB.CO_EMPR    
And TTPORC_IMPT.NU_ANNO = TXMVTO_CNTB.NU_ANNO    
And TTPORC_IMPT.NU_MESE = TXMVTO_CNTB.NU_MESE, TTIDEN_CNTA, TMPLAN_ANNO    
Where TXMVTO_CNTB.CO_EMPR = "' + @ISCO_EMPR + '"    
And TXMVTO_CNTB.NU_CNTB_EMPR = ' + @VSNU_CNTB_EMPR + '    
And TXMVTO_CNTB.CO_OPRC_CNTB In (    
     Select T1.CO_OPRC_CNTB From TTIDEN_OPER T1    
     Where T1.CO_EMPR = TXMVTO_CNTB.CO_EMPR    
     And T1.NU_CNTB_EMPR = TXMVTO_CNTB.NU_CNTB_EMPR    
     And T1.ID_OPRC   = "' + @VSID_COMP + '" )    
 And TXMVTO_CNTB.NU_ANNO  = ' + @VSNU_ANNO + '    
 And TXMVTO_CNTB.NU_MESE >= ' + @VSNU_MESE_INIC + '    
 And TXMVTO_CNTB.NU_MESE <= ' + @VSNU_MESE_FINA + '    
 And ((TXMVTO_CNTB.CO_CNTA_EMPR In (                         
     Select T2.CO_CNTA_EMPR From TTIDEN_CNTA T2     
     Where T2.CO_EMPR = TXMVTO_CNTB.CO_EMPR     
     And T2.NU_CNTB_EMPR = TXMVTO_CNTB.NU_CNTB_EMPR     
     And T2.ID_CNTA = "' + @VSID_COMP + '" ) ' + @ISCA_WHER_LOCA + ' )                    
 Or (TXMVTO_CNTB.CO_CNTA_EMPR In (     
     Select T2.CO_CNTA_EMPR From TTIDEN_CNTA T2     
     Where T2.CO_EMPR = TXMVTO_CNTB.CO_EMPR     
    And T2.NU_CNTB_EMPR = TXMVTO_CNTB.NU_CNTB_EMPR     
     And T2.ID_CNTA In ("' + @VSID_IIGV + '", "' + @VSID_GAST_NGRA + '", "' + @VSID_TRIB + '"  ) )    
)) 
 and TXMVTO_CNTB.SI_MVTO_CNTB = "APR"    
 and TTIDEN_CNTA.CO_EMPR   = TXMVTO_CNTB.CO_EMPR    
 and TTIDEN_CNTA.CO_CNTA_EMPR = TXMVTO_CNTB.CO_CNTA_EMPR           
 and TTIDEN_CNTA.NU_CNTB_EMPR = TXMVTO_CNTB.NU_CNTB_EMPR           
 And TMPLAN_ANNO.CO_EMPR = TXMVTO_CNTB.CO_EMPR          
 And TMPLAN_ANNO.CO_CNTA_EMPR = TXMVTO_CNTB.CO_CNTA_EMPR           
 Union All           
 Select Null, Null, Null, "99", "999", 99, 9999999999, Null, Null,           
 Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null,     
 Null, Null, Null, Null    
 Order By 4,5,6,7 ASC, 16 Asc, 10 DESC ,8,9 ASC' )             
    
Open CU_TXMVTO_CNTB_Q20_1    
Fetch CU_TXMVTO_CNTB_Q20_1 into    
    @CDFE_DOCU, @CSTI_DOCU_CNTB, @CSNU_DOCU, @CSCO_UNID, @CSCO_OPRC, @CNNU_MESE,    
    @CSNU_ASTO, @CSTI_AUXI_EMPR, @CSCO_AUXI, @CSCN_CNTB_EMPR, @CSTI_OPER_CNTB,    
    @CSCO_MONE, @CNFA_CAMB, @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB, @CSID_CNTA,    
    @CNPO_REN1, @CNPO_REN2, @CNPO_IGV1, @CNPO_IGV2, @CSTI_DOCU_DETR,    
 @CSNU_DOCU_DETR, @CDFE_DOCU_DETR,   @CSCO_EMPR, @CDFE_ASTO_CNTB,    
 @CSTI_CAMB, @CSST_CNTA_CAMB, @CDFE_DOCU_VENC, @CSST_COMP, @CSTI_DOCU_REFE,     
 @CSNU_DOCU_REFE, @CDFE_DOCU_REFE    
                              
Select @VSNU_ASTO_BASE = Null                              
Select @VSCO_MONE_BASE = Null                              
                              
While @@Fetch_status = 0                              
Begin                         
    
 /*----- Actualiza Temporal -----*/                              
 If @VSNU_ASTO_BASE != Rtrim(@CSCO_UNID) + Rtrim(@CSCO_OPRC) + Substring( Convert(Varchar(2),100 + @CNNU_MESE),2,2) + Rtrim(@CSNU_ASTO)                               
    And @VSCO_MONE_BASE IS NOT Null        
 Begin                              
  Select @VNIM_TOTA_BASX = Round(@VNIM_TOTA_ORIG - @VNIM_IIGV_ORIG - @VNIM_TRIB_ORIG,2)                   
  Select @VNIM_TOTA_BASY = Round(@VNIM_IIGV_ORIG / ((@VNPO_IGV1 + @VNPO_IGV2) / 100), 2)                   
--** LEE DATOS CONTABLES    
  Select @VNIM_CONT_BASX = Round(@VNIM_TOTA_CONT - @VNIM_IIGV_CONT - @VNIM_TRIB_CONT,2)                                    
  Select @VNIM_CONT_BASY = Round(@VNIM_IIGV_CONT / ((@VNPO_IGV1 + @VNPO_IGV2) / 100),2)                                    
--** LEE DATOS CONTABLES    
                             
  If Abs(Round(@VNIM_TOTA_BASX - @VNIM_TOTA_BASY,2)) > 0.50                              
  Begin    
    Select @VNIM_AFEC_ORIX = Round(@VNIM_TOTA_BASY,2)                              
    Select @VNIM_INAF_ORIX = Round(@VNIM_TOTA_BASX - @VNIM_TOTA_BASY,2)                
--** LEE DE DATOS CONTABLES    
    Select @VNIM_AFEC_CONX = Round(@VNIM_CONT_BASY,2)                                    
    Select @VNIM_INAF_CONX = Round(@VNIM_CONT_BASX - @VNIM_CONT_BASY,2)         
--** LEE DE DATOS CONTABLES    
  End    
  Else    
  Begin    
    Select @VNIM_AFEC_ORIX = Round(@VNIM_TOTA_BASX,2)                              
    Select @VNIM_INAF_ORIX = 0.00                              
--** LEE DE DATOS CONTABLES                    
    Select @VNIM_AFEC_CONX = Round(@VNIM_CONT_BASX,2)                                    
    Select @VNIM_INAF_CONX = 0.00                                    
--** LEE DE DATOS CONTABLES                    
  End    
                              
  If @VSCO_MONE != @VSCO_MONE_BAS1                              
  Begin                            
    Select @VNIM_IIGV_ORIX = @VNIM_IIGV_ORIG                              
    Select @VNIM_TRIB_ORIX = @VNIM_TRIB_ORIG                              
    Select @VNIM_TOTA_ORIX = @VNIM_TOTA_ORIG    
  
    Select @VNIM_AFEC_CNTX = @VNIM_AFEC_CONX            
    Select @VNIM_INAF_CNTX = @VNIM_INAF_CONX                    
    Select @VNIM_IIGV_CNTX = @VNIM_IIGV_CONT                    
    Select @VNIM_TRIB_CNTX = @VNIM_TRIB_CONT    
    Select @VNIM_TOTA_CNTX = @VNIM_TOTA_CONT    
    Select @VNIM_TOTA_CNTB_AUXI = @VNIM_TOTA_CONT_AUXI                    
  End  
  Else  
  Begin  
/*
    Select @VNIM_AFEC_CNTX = Round(@VNIM_AFEC_ORIX,2)  
    Select @VNIM_INAF_CNTX = Round(@VNIM_INAF_ORIX,2)  
    Select @VNIM_IIGV_CNTX = Round(@VNIM_IIGV_ORIG,2)  
    Select @VNIM_TRIB_CNTX = Round(@VNIM_TRIB_CONT,2)  
    Select @VNIM_TOTA_CNTX = Round(@VNIM_TOTA_ORIG,2)  
    Select @VNIM_TOTA_CNTB_AUXI = Round(@VNIM_TOTA_ORIG_AUXI,2)          */              
    Select @VNIM_AFEC_CNTX = @VNIM_AFEC_CONX            
    Select @VNIM_INAF_CNTX = @VNIM_INAF_CONX                    
    Select @VNIM_IIGV_CNTX = @VNIM_IIGV_CONT                    
    Select @VNIM_TRIB_CNTX = @VNIM_TRIB_CONT    
    Select @VNIM_TOTA_CNTX = @VNIM_TOTA_CONT    
    Select @VNIM_TOTA_CNTB_AUXI = @VNIM_TOTA_CONT_AUXI                    
  
    Select @VNIM_AFEC_ORIX = 0.00       
    Select @VNIM_IIGV_ORIX = 0.00       
    Select @VNIM_INAF_ORIX = 0.00          
    Select @VNIM_TRIB_ORIX = 0.00    
    Select @VNIM_TOTA_ORIX = 0.00          
    Select @VNFA_CAMB = Null          
    
  End                          
          
-- CASO IMPUESTO RENTA NO DOMICILIADOS          
If @VNID_NDOM = 1 Or @VSTI_PERS_SUNA = '03'--- CASO AUXILIAR ES NO DOMICILIADO          
  Begin                       
 SELECT @VSST_NDOM = '1'    
  End  -- FIN CASO IMPUESTO RENTA NO DOMICILIADOS            
          
-- CASO GASTOS NO GRAVADOS          
If @VNID_GAST = 1          
  Begin                         
 Select @VNIM_AFEC_CNTX = Round(@VNIM_IIGV_CONT / ((@VNPO_IGV1 + @VNPO_IGV2) / 100),2)          
 Select @VNIM_INAF_CNTX = IsNull(@VNIM_GAST_CONT,0)          
 Select @VNIM_TOTA_CNTX = IsNull(@VNIM_AFEC_CNTX,0) + IsNull(@VNIM_INAF_CNTX,0) + IsNull(@VNIM_IIGV_CONT,0) ---@VNIM_TOTA_CNTB_AUXI                         
                        
  If @VSCO_MONE != @VSCO_MONE_BAS1                         
  Begin           
      Select @VNIM_AFEC_ORIX = Round(@VNIM_IIGV_ORIG / ((@VNPO_IGV1 + @VNPO_IGV2) / 100), 2)          
      Select @VNIM_INAF_ORIX = @VNIM_GAST_ORIG          
      Select @VNIM_IIGV_ORIX = @VNIM_IIGV_ORIG          
      Select @VNIM_TOTA_ORIX = @VNIM_AFEC_ORIX +  @VNIM_INAF_ORIX  + @VNIM_IIGV_ORIX                     
  End                    
End  -- FIN CASO gastos no gravados          
                        
If @VNID_COMP = 1 And @VNID_IIGV = 0 And @VNID_GAST = 0                  
Begin                 
 Select @VNIM_INAF_CNTX = @VNIM_AFEC_CNTX                        
 Select @VNIM_AFEC_CNTX = 0                          
 Select @VNIM_INAF_CNTX = @VNIM_TOTA_CNTX                        
End                        
-- FIN SE AUMENTO                        
                              
  /*-- OBTENGO ESTATUS DE RETENCION DEL DOCUMENTO --*/                              
  Select @VSCO_SUNA = CO_SUNA, @VSNO_DOCU = NO_DOCU, @VSST_RETE_DOCU = ST_RETE                              
  From TTDOCU_CNTB                              
  Where TI_DOCU = @VSTI_DOCU_CNTB                              
                               
  Select @VSTI_DOCU_AUXI = @VSTI_DOCU_CNTB                              
                          
---- CONVIERTO EL PORCENTAJE DEL CURSOR EN CARACTER ANTES DE INSERTAR A LA TEMPO --                          
                          
SELECT @VNPO_IGV1_0001 = ROUND(@VNPO_IGV1,2)                          
                              
/*-- INGRESO ESTATUS DE RETENCION DEL DOCUMENTO Y AUXILIAR --*/            
 If @VSST_COMP = 'GRA'    
  Begin    
   Select @VNIM_GRAV_CNTX = @VNIM_AFEC_CNTX, @VNIM_GRAV_IGVX = @VNIM_IIGV_CNTX    
   Select @VNIM_NGRA_CNTX = 0, @VNIM_NGRA_IGVX = 0    
   Select @VNIM_SDCF_CNTX = 0, @VNIM_SDCF_IGVX = 0    
  End    
 Else If @VSST_COMP = 'GNG'    
  Begin    
   Select @VNIM_GRAV_CNTX = 0, @VNIM_GRAV_IGVX = 0    
   Select @VNIM_NGRA_CNTX = @VNIM_AFEC_CNTX, @VNIM_NGRA_IGVX = @VNIM_IIGV_CNTX    
   Select @VNIM_SDCF_CNTX = 0, @VNIM_SDCF_IGVX = 0    
  End    
 Else If @VSST_COMP = 'NGR'    
  Begin    
   Select @VNIM_GRAV_CNTX = 0, @VNIM_GRAV_IGVX = 0    
   Select @VNIM_NGRA_CNTX = 0, @VNIM_NGRA_IGVX = 0    
   Select @VNIM_SDCF_CNTX = @VNIM_AFEC_CNTX, @VNIM_SDCF_IGVX = @VNIM_IIGV_CNTX    
  End    
 Else     
  Begin    
   Select @VNIM_GRAV_CNTX = 0, @VNIM_GRAV_IGVX = 0    
   Select @VNIM_NGRA_CNTX = 0, @VNIM_NGRA_IGVX = 0    
   Select @VNIM_SDCF_CNTX = 0, @VNIM_SDCF_IGVX = 0    
  End    
    
   Insert Into #TWMVTO_CNTB_Q55_1 (    
  CO_EMPR,  FE_DOCU, FE_VENC_PAGO, TI_DOCU_SUNA, TI_DOCU_CNTB, NO_DOCU, NU_DOCU,     
  CO_UNID_CNTB, CO_OPRC, NU_ASTO, CO_PROV,  NO_CORT_PROV, CO_DOCU_SUNA,    
  NU_DOCU_SUNA, CO_MONE, FA_CAMB, IM_AFEC_ORIG, IM_IIGV_ORIG, IM_INAF_ORIG, IM_TOTA_ORIG,     
     IM_AFEC_CNTB, IM_IIGV_CNTB, IM_BASE_NGRA, IM_IIGV_NGRA, IM_BASE_SDCF, IM_IIGV_SDCF,     
  IM_INAF_CNTB, IM_OTRO_TRIB, IM_TOTA_CNTB,    
  ST_RETE_AUXI, ST_RETE_DOCU, ST_RETE_BCON, ST_STAT,      
     ST_NDEB, TI_DOCU_SURE, NU_DOCU_REFE, FE_DOCU_REFE,    
  NU_DOCU_DETR, FE_DOCU_DETR, PO_IMPT, ST_NDOM)    
   Values(    
   @CSCO_EMPR, @VDFE_DOCU, @VDFE_VENC_PAGO, @VSCO_SUNA, @VSTI_DOCU_AUXI, @VSNO_DOCU, @VSNU_DOCU, @VSCO_UNID,     
   @VSCO_OPRC, @VSNU_ASTO, @VSCO_PROV, @VSNO_CORT_PROV, @VSCO_DOCU_SUNA, @VSNU_DOCU_SUNA, @VSCO_MONE, @VNFA_CAMB,     
   @VNIM_AFEC_ORIX, @VNIM_IIGV_ORIX, @VNIM_INAF_ORIX, @VNIM_TOTA_ORIX, @VNIM_GRAV_CNTX, @VNIM_GRAV_IGVX, @VNIM_NGRA_CNTX,     
   @VNIM_NGRA_IGVX, @VNIM_SDCF_CNTX, @VNIM_SDCF_IGVX, @VNIM_INAF_CNTX, @VNIM_TRIB_CNTX, @VNIM_TOTA_CNTX, @VSST_RETE_AUXI,     
   @VSST_RETE_DOCU, @VSST_BCON_AUXI, @VSST_STAT, 'N', @VSTI_DOCU_SURE, @VSNU_DOCU_REFE, @VDFE_DOCU_REFE, @VSNU_DOCU_DETR,     
   @VDFE_DOCU_DETR, ROUND(@VNPO_IGV1_0001, 2), @VSST_NDOM)    
                      
   Select @VSTI_CAMB_BASE = NULL                          
   Select @VDFE_ASTO_CNTB = NULL                          
   Select @VSCO_MONE_BASE = Null   Select @VDFE_DOCU = Null                              
   Select @VSTI_DOCU_CNTB = Null   Select @VSNU_ASTO = Null                              
   Select @VSCO_PROV = Null        Select @VSNO_CORT_PROV = Null                              
   Select @VSNU_DOCU_SUNA  = Null  Select @VSCO_MONE = Null                              
   Select @VNIM_IIGV_ORIG = 0.00   Select @VNIM_TRIB_ORIG = 0.00                           
   Select @VNIM_RENT_ORIG = 0.00   Select @VNIM_TOTA_ORIG = 0.00                              
   Select @VNIM_AFEC_ORIX = 0.00   Select @VNIM_INAF_ORIX = 0.00                              
   Select @VNIM_IIGV_ORIX = 0.00   Select @VNIM_TRIB_ORIX = 0.00                              
   Select @VNIM_RENT_ORIX = 0.00   Select @VNIM_TOTA_ORIX = 0.00                              
   Select @VNIM_AFEC_CNTX = 0.00   Select @VNIM_INAF_CNTX = 0.00                              
   Select @VNIM_IIGV_CNTX = 0.00   Select @VNIM_TRIB_CNTX = 0.00                                 
   Select @VNIM_RENT_CNTX = 0.00   Select @VNIM_TOTA_ORIX = 0.00                              
   Select @VNFA_CAMB = 0.00                              
   Select @VDFE_DOCU_DETR = Null   Select @VSNU_DOCU_DETR = Null                              
   Select @VSTI_DOCU_SURE = Null, @VSNU_DOCU_REFE = Null, @VDFE_DOCU_REFE = Null    
   Select @VNIM_IIES_ORIG = 0.00                      
   Select @VNIM_IIES_CNTX = 0.00                      
   Select @VNIM_GAST_CONT = 0          
   Select @VNIM_GAST_ORIG = 0     
                        
   Select @VNIM_TOTA_ORIG_AUXI = 0                      
   Select @VNIM_TOTA_CNTB_AUXI = 0                         
   Select @VNID_IIES = 0                         
   Select @VNID_RENT = 0                        
   Select @VNID_NDOM = 0     
   Select @VNID_IIGV = 0                        
   Select @VNID_COMP = 0                        
   Select @VNID_GAST = 0              
   Select @VNID_NGRA = 0    
   Select @VDFE_VENC_PAGO = NULL                                  
   Select @VSST_NDOM = ''    
   Select @VSST_COMP = ''    
                    
/*-LEE DATOS CONTABLES----*/                    
   Select @VNIM_TOTA_CONT = 0.00                    
   Select @VNIM_IIGV_CONT = 0.00                    
   Select @VNIM_AFEC_CONX = 0.00                    
   Select @VNIM_INAF_CONX = 0.00                    
   Select @VNIM_TRIB_CONT = 0.00            
   Select @VNIM_TOTA_CONT_AUXI = 0.00                    
   Select @VSTI_PERS_SUNA = NULL          
          
/*-LEE DATOS CONTABLES----*/                    
                    
                   
 End -- (If @VSNU_ASTO_BASE != Rtrim(@CSCO_UNID) + Rtrim(@CSCO_OPRC) +......)                              
    
------**************---------------------**************----------------------**************----------------    
    
 /*-----  Acumula Movimientos - Provisiones -----*/                              
 Select @VSNU_ASTO_BASE = Rtrim(@CSCO_UNID) + Rtrim(@CSCO_OPRC) + Substring( Convert(Varchar(2),100 + @CNNU_MESE),2,2) + RTrim(@CSNU_ASTO)                            
    
-- OBTENGO EL CODIGO SUNAT DE LA TABLA DE DOCUMENTOS                            
 select @VSCO_SUNA_0001 = CO_SUNA                            
 FROM TTDOCU_CNTB              
 WHERE TI_DOCU = @CSTI_DOCU_CNTB     
    
--- VALIDA NUEVOS CAMPOS FE_PAGO (FECHA PAGO ) Y FE_DOCU_VENC (FECHA VENC) DEL DOCUMENTO          
--- VALIDA QUE LA LINEA TENGA DOCUMENTO Y QUE PERTENEZCA AL ID DE REG COMPRAS          
--- PORQUE LA CUENTA DE IGV TAMBIEN LLEVA DOCUMENTO Y ESTA CUENTA NO DEBE TOMARSE EN CUENTA          
--- PARA SACAR LOS DATOS DE FECHA DE PAGO          
If IsNull(Rtrim(Ltrim(@CSTI_DOCU_CNTB)),'') != '' And @VSID_COMP = @CSID_CNTA          
Begin                 
     Select @VDFE_PAGO = NULL          
    
     Select @VDFE_PAGO = Max(FE_PAGO)           
     From TXMVTO_CNTB          
     Where CO_EMPR = @ISCO_EMPR          
     And NU_CNTB_EMPR = @INNU_CNTB_EMPR          
     And NU_ANNO = @INNU_ANNO          
     And NU_MESE = @INNU_MESE_INIC          
     And CO_CNTA_EMPR = @CSCN_CNTB_EMPR          
     And TI_AUXI_EMPR = @CSTI_AUXI_EMPR          
     And CO_AUXI_EMPR = @CSCO_AUXI          
     And TI_DOCU = @CSTI_DOCU_CNTB          
     And NU_DOCU = @CSNU_DOCU          
     And SI_MVTO_CNTB = 'APR'          
     And CO_OPRC_CNTB Not In           
             (Select CO_OPRC_CNTB           
              From TTIDEN_OPER           
              Where CO_EMPR = @ISCO_EMPR           
              And NU_CNTB_EMPR = @INNU_CNTB_EMPR           
              And ID_OPRC = @VSID_COMP )         
  
--- CASO SEA LIQU O POLIZA SOLO SE VISUALIZA LA FECHA DE PAGO NO SE VISUALIZA FECHA DE VENCIMIENTO           
If @VSCO_SUNA_0001 = @VSCO_SUNA_LIQU Or @VSCO_SUNA_0001 = @VSCO_SUNA_POLI          
  Begin           
 Select @VDFE_VENC_PAGO = @VDFE_PAGO          
  End          
          
--- CASO SEA SERVICIO DE SUMINISTRO SE COLOCA EL QUE SEA MENOR           
If @VSCO_SUNA_0001 = @VSCO_SUNA_SERV          
Begin           
 If @CDFE_DOCU_VENC < @VDFE_PAGO And @CDFE_DOCU_VENC IS NOT NULL And @VDFE_PAGO IS NOT NULL          
 Begin          
 Select @VDFE_VENC_PAGO = @CDFE_DOCU_VENC          
 End           
          
 If @VDFE_PAGO < @CDFE_DOCU_VENC And @CDFE_DOCU_VENC IS NOT NULL And @VDFE_PAGO IS NOT NULL          
 Begin          
 Select @VDFE_VENC_PAGO = @VDFE_PAGO          
 End           
          
 If @VDFE_PAGO = @CDFE_DOCU_VENC And @CDFE_DOCU_VENC IS NOT NULL And @VDFE_PAGO IS NOT NULL-- ??          
 Begin          
 Select @VDFE_VENC_PAGO = @CDFE_DOCU_VENC          
 End           
          
 If @CDFE_DOCU_VENC IS NULL And @VDFE_PAGO IS NOT NULL          
 Begin           
 Select @VDFE_VENC_PAGO = @VDFE_PAGO          
 End           
          
 If @VDFE_PAGO IS NULL And @CDFE_DOCU_VENC IS NOT NULL          
 Begin           
 Select @VDFE_VENC_PAGO = @CDFE_DOCU_VENC          
 End           
End /*FIN If @VSCO_SUNA_0001 = @VSCO_SUNA_SERV*/          
          
End /*FIN If IsNull(Rtrim(Ltrim(@CSTI_DOCU_CNTB)),'') != ''*/          
----- FIN VALIDA NUEVOS CAMPOS FE_PAGO (FECHA PAGO ) Y FE_DOCU_VENC (FECHA VENC) DEL DOCUMENTO          
    
 If @CSTI_DOCU_CNTB is not null                          
-- SI EL CO_SUNA DE LA TMPARA_CONT = CO_SUNA DE LA TTDOCU_CNTB                            
 IF  @VSCO_SUNA_NOCR = @VSCO_SUNA_0001                            
-- SE OBTIENE EL TIPO DOCUMENTO DE REFERENCIA, EL NUMERO Y LA FECHA DE LA FACTURA ORIGEN                            
  Begin                            
    SELECT @VSTI_DOCU = TI_DOCU_REFE,                            
     @VSNU_DOCU_0001 = NU_DOCU_REFE,                            
    @VDFE_DOCU_0001 = FE_DOCU_REFE                            
    FROM TXMVTO_CNTB                            
    WHERE CO_EMPR = @ISCO_EMPR                            
    AND NU_CNTB_EMPR = @INNU_CNTB_EMPR        
    AND CO_UNID_CNTB = @CSCO_UNID                            
    AND NU_ANNO = @INNU_ANNO                            
    AND NU_MESE = @INNU_MESE_FINA            
    AND CO_OPRC_CNTB = @CSCO_OPRC                            
    AND NU_ASTO = @CSNU_ASTO                            
    AND CO_CNTA_EMPR = @CSCN_CNTB_EMPR                            
    AND SI_MVTO_CNTB = 'APR'    
                             
    --SI EL MES DEL DOCUMENTO ES IGUAL AL MES DEL REPORTE                            
    IF Year(@VDFE_DOCU_0001) + MONTH(@VDFE_DOCU_0001) = @INNU_ANNO + @INNU_MESE_FINA                            
      Begin                            
        SELECT @VNPO_IGV1 = @VNPO_IGV1_ANNO                            
        SELECT @VNPO_IGV2 = @VNPO_IGV2_ANNO                            
      End                            
                            
    --SI EL MES DEL DOCUMENTO ES DIFERENTE AL MES DEL REPORTE                            
    If Year(@VDFE_DOCU_0001) + Month(@VDFE_DOCU_0001) != @INNU_ANNO + @INNU_MESE_FINA                            
      Select @VNPO_IGV1 = PO_IMPT_VEN1,                     
             @VNPO_IGV2 = PO_IMPT_VEN2                            
      From TTPORC_IMPT                            
      Where CO_EMPR = @ISCO_EMPR                            
      And   NU_ANNO = Year(@VDFE_DOCU_0001)                            
      And   NU_MESE = Month(@VDFE_DOCU_0001)                            
  End                            
 Else   -- IF  @VSCO_SUNA_NOCR <> @VSCO_SUNA_0001                            
  Begin                            
   IF Year(@CDFE_DOCU) + Month(@CDFE_DOCU) = @INNU_ANNO + @INNU_MESE_FINA                 
    Begin                            
        SELECT @VNPO_IGV1 = @VNPO_IGV1_ANNO                            
        SELECT @VNPO_IGV2 = @VNPO_IGV2_ANNO                            
    End                            
                            
  --SI EL MES DEL DOCUMENTO ES DIFERENTE AL MES DEL REPORTE                            
  If Year(@CDFE_DOCU) + Month(@CDFE_DOCU) != @INNU_ANNO + @INNU_MESE_FINA                            
    Select @VNPO_IGV1 = PO_IMPT_VEN1,                            
           @VNPO_IGV2 = PO_IMPT_VEN2                            
    From TTPORC_IMPT                            
    Where CO_EMPR = @ISCO_EMPR                            
    And   NU_ANNO = Year(@CDFE_DOCU)                            
    And   NU_MESE = Month(@CDFE_DOCU)                            
 End --END DEL ELSE                            
 -- FIN DEL IF  @VSCO_SUNA_NOCR = @VSCO_SUNA_0001                            
------------------------------------------------------                            
                              
 -- Cuentas del Registro de Compras --------------                              
 If @CSID_CNTA = '001'                
 Begin                            
-- VALIDA SI CODIGO SUNAT ES POLIZA DE IMPORTACION           
--- EXTRAE EL CODIGO SUNAT DEL DOCUMENTO DE LA 42x          
 Select @VSCO_SUNA_VARI = ''          
          
 Select @VSCO_SUNA_VARI = IsNull(CO_SUNA,'')          
 From TTDOCU_CNTB          
 Where TI_DOCU = @CSTI_DOCU_CNTB          
          
 Select @VSCO_EMPR_0001 = ''          
 Select @VSCO_EMPR_0001 = IsNull(RTrim(CO_EMPR),'')          
 From TTCOSU_POLI          
 Where CO_SUNA = @VSCO_SUNA_VARI           
          
 If @VSCO_EMPR_0001 != ''          
  Begin           
   Select @VNID_GAST = 1                        
  End           
    
  Select @VNID_COMP = 1      
    
  If @VSCO_MONE_BASE IS Null                              
  Begin                        
   /*-- OBTENGO ESTATUS DE RETENCION DEL AUXILIAR (PROVEEDOR) --*/                              
   Select @VSCO_PROV = CO_AUXI_EMPR,                              
          @VSNO_CORT_PROV = NO_AUXI,                                
          @VSCO_DOCU_SUNA = CO_DOCU_SUNA,                              
          @VSNU_DOCU_SUNA = NU_DOCU_SUNA,                              
          @VSST_RETE_AUXI = ST_RETE,                              
          @VSST_BCON_AUXI = ST_BCON,                              
          @VSST_DETR      = ST_DETR,           
          @VSTI_PERS_SUNA = IsNull(TI_PERS_SUNA,'')                              
   From TMAUXI_EMPR                              
   Where CO_EMPR = @ISCO_EMPR           
   And TI_AUXI_EMPR = @CSTI_AUXI_EMPR           
   And CO_AUXI_EMPR = @CSCO_AUXI                              
     
  If @@rowcount = 0                              
   Begin                              
    Select @VDFE_DOCU = Null                              
    Select @VSTI_DOCU_CNTB = Null                              
    Select @VSNU_DOCU = Null                              
    Select @VSCO_PROV = Null                               
    Select @VSNO_CORT_PROV = Null                             
    Select @VSCO_DOCU_SUNA = Null    
    Select @VSNU_DOCU_SUNA = Null                             
    Select @VDFE_DOCU_DETR = Null                                 
    Select @VSNU_DOCU_DETR = Null                              
    Select @VDFE_DOCU_REFE = Null                                 
    Select @VSNU_DOCU_REFE = Null                              
    Select @VSTI_DOCU_REFE = Null                              
   End                              
  Else                               
   Begin                              
    Select @VDFE_DOCU      = @CDFE_DOCU                              
    Select @VSTI_DOCU_CNTB = @CSTI_DOCU_CNTB                              
    Select @VSNU_DOCU      = @CSNU_DOCU                 
    Select @VDFE_DOCU_DETR = @CDFE_DOCU_DETR                              
    Select @VSNU_DOCU_DETR = @CSNU_DOCU_DETR                            
    Select @VDFE_DOCU_REFE = @CDFE_DOCU_REFE                      
    Select @VSNU_DOCU_REFE = @CSNU_DOCU_REFE    
    Select @VSTI_DOCU_REFE = @CSTI_DOCU_REFE    
    
    
 Select @VSST_COMP = @CSST_COMP                                     
    
 Select @VSCO_SUNA_VARI = IsNull(CO_SUNA,'')          
 From TTDOCU_CNTB          
 Where TI_DOCU = @CSTI_DOCU_CNTB      
    
 select @VSTI_DOCU_SURE = CO_SUNA                            
 FROM TTDOCU_CNTB              
 WHERE TI_DOCU = @CSTI_DOCU_REFE     
   End                              
                              
   -- Si el Auxiliar est? sujeto a detracci?n, entonces NO retiene IGV,                               
   If @VSST_DETR = 'S'                       
      Select @VSST_RETE_AUXI = 'S'                              
                              
   Select @VSCO_UNID = @CSCO_UNID                               
   Select @VSCO_OPRC = @CSCO_OPRC                              
   Select @VSNU_ASTO = @CSNU_ASTO                              
   Select @VSCO_MONE = @CSCO_MONE                        
   Select @VNFA_CAMB = Round(@CNFA_CAMB,3)                              
   Select @VSCO_MONE_BASE = @CSCO_MONE                              
   Select @VSTI_CAMB_BASE = @CSTI_CAMB                      
   Select @VDFE_ASTO_CNTB = @CDFE_ASTO_CNTB       
                
   If @VSTI_CAMB_BASE = 'PAC'                
    Begin                 
     Select @VSTI_CAMB_BASE = @CSST_CNTA_CAMB           
    End                  
  End --( If @VSCO_MONE_BASE IS Null )                              
    
  If @VSCO_MONE_BASE IS NOT Null                              
  Begin                              
   If @VSCO_MONE_BASE != @CSCO_MONE                              
   Begin    
      -- CASO EUROS                       
      Exec SP_CONV_MONE_Q05 @ISCO_EMPR, @CSCO_MONE, @VSCO_MONE_BASE, @VSCO_MONE_BASE, @VSTI_CAMB_BASE, @VSTI_CAMB_BASE,                       
      @VNFA_CAMB,  @VDFE_ASTO_CNTB, @CNIM_MVTO_ORIG, 'P', @CNIM_MVTO_ORIG OUTPUT                            
   End     
   If @CSTI_OPER_CNTB = 'ABO'                              
   Begin    
    Select @VNIM_TOTA_ORIG = Round(@VNIM_TOTA_ORIG + @CNIM_MVTO_ORIG,2)                              
    Select @VNIM_TOTA_ORIG_AUXI = Round( @VNIM_TOTA_ORIG_AUXI + @CNIM_MVTO_ORIG,2)                      
    --*** select importe contabilidad                    
    Select @VNIM_TOTA_CONT = Round(@VNIM_TOTA_CONT + @CNIM_MVTO_CNTB,2)                                    
    Select @VNIM_TOTA_CONT_AUXI = Round(@VNIM_TOTA_CONT_AUXI + @CNIM_MVTO_CNTB,2)                                    
    --*** select importe contabilidad                    
   End    
   Else If @CSTI_OPER_CNTB = 'CAR'                              
   Begin    
    Select @VNIM_TOTA_ORIG = Round(@VNIM_TOTA_ORIG - @CNIM_MVTO_ORIG,2)                              
    Select @VNIM_TOTA_ORIG_AUXI = Round( @VNIM_TOTA_ORIG_AUXI - @CNIM_MVTO_ORIG,2)                      
    --*** select importe contabilidad                    
    Select @VNIM_TOTA_CONT = Round(@VNIM_TOTA_CONT - @CNIM_MVTO_CNTB,2)                                    
    Select @VNIM_TOTA_CONT_AUXI = Round(@VNIM_TOTA_CONT_AUXI - @CNIM_MVTO_CNTB,2)                                    
    --*** select importe contabilidad                    
   End    
  End -- (If @VSCO_MONE_BASE IS NOT Null)                         
                              
 End -- ( If @CSID_CNTA = '001' )                              
                            
 /*-----  Acumula Movimientos - IGV  -----*/                              
 If @CSID_CNTA = '009'                              
 Begin                          
  If @VSCO_MONE_BASE IS NOT Null                           
  Begin                              
  Select @VNID_IIGV = 1                            
   If @VSCO_MONE_BASE != @CSCO_MONE                              
   Begin                              
      Exec SP_CONV_MONE_Q05 @ISCO_EMPR, @CSCO_MONE, @VSCO_MONE_BASE, @VSCO_MONE_BASE, @VSTI_CAMB_BASE, @VSTI_CAMB_BASE,                       
      @VNFA_CAMB,  @VDFE_ASTO_CNTB, @CNIM_MVTO_ORIG, 'P', @CNIM_MVTO_ORIG OUTPUT                            
   End                              
   If @CSTI_OPER_CNTB = 'CAR'                  
   Begin                              
    Select @VNIM_IIGV_ORIG = Round(@VNIM_IIGV_ORIG + @CNIM_MVTO_ORIG,2)           
    --*** select importe contabilidad                    
    Select @VNIM_IIGV_CONT = Round(@VNIM_IIGV_CONT + @CNIM_MVTO_CNTB,2)                                    
    --*** select importe contabilidad                    
   End                              
   Else If @CSTI_OPER_CNTB = 'ABO'                              
   Begin                              
    Select @VNIM_IIGV_ORIG = Round(@VNIM_IIGV_ORIG - @CNIM_MVTO_ORIG,2)                              
    --*** select importe contabilidad                    
    Select @VNIM_IIGV_CONT = Round(@VNIM_IIGV_CONT - @CNIM_MVTO_CNTB,2)                                    
    --*** select importe contabilidad                    
   End           
  End                              
 End --( If @CSID_CNTA = '009' )                                            
    
 /*-----  Acumula Movimientos - Otros Tributos  -----*/                              
 If @CSID_CNTA = '019'                              
 Begin                          
  If @VSCO_MONE_BASE IS NOT Null                           
  Begin                              
  Select @VNID_OTRO = 1                            
   If @VSCO_MONE_BASE != @CSCO_MONE                              
   Begin                              
      Exec SP_CONV_MONE_Q05 @ISCO_EMPR, @CSCO_MONE, @VSCO_MONE_BASE, @VSCO_MONE_BASE, @VSTI_CAMB_BASE, @VSTI_CAMB_BASE,                       
      @VNFA_CAMB,  @VDFE_ASTO_CNTB, @CNIM_MVTO_ORIG, 'P', @CNIM_MVTO_ORIG OUTPUT                            
   End                              
   If @CSTI_OPER_CNTB = 'CAR'                  
   Begin                              
    Select @VNIM_TRIB_ORIG = Round(@VNIM_TRIB_ORIG + @CNIM_MVTO_ORIG,2)           
    --*** select importe contabilidad                    
    Select @VNIM_TRIB_CONT = Round(@VNIM_TRIB_CONT + @CNIM_MVTO_CNTB,2)                                    
    --*** select importe contabilidad                    
   End                              
   Else If @CSTI_OPER_CNTB = 'ABO'                              
   Begin                              
    Select @VNIM_TRIB_ORIG = Round(@VNIM_TRIB_ORIG - @CNIM_MVTO_ORIG,2)                              
    --*** select importe contabilidad                    
    Select @VNIM_TRIB_CONT = Round(@VNIM_TRIB_CONT - @CNIM_MVTO_CNTB,2)                                    
    --*** select importe contabilidad                    
   End                              
  End                              
 End --( If @CSID_CNTA = '019' )                                            
    
 /*-----   Acumula Movimientos - impuesto renta No domiciliados    -----*/                        
  If @CSID_CNTA = '033'        
  Begin                              
   If @VSCO_MONE_BASE IS NOT Null                              
   Begin                              
     Select @VNID_NDOM = 1                        
   End -- (If @VSCO_MONE_BASE IS NOT Null)    
  End -- ( If @CSID_CNTA = '033' )    
          
 /*-----   Acumula Movimientos - cuenta gastos despacho no gravados  -----*/                     
  If @CSID_CNTA = '034' Or @VSST_COMP = 'NGR'                        
  Begin                   
   If @VSCO_MONE_BASE IS NOT Null                              
   Begin                              
    If @VSCO_MONE_BASE != @CSCO_MONE                              
    Begin                              
   Exec SP_CONV_MONE_Q05 @ISCO_EMPR, @CSCO_MONE, @VSCO_MONE_BASE, @VSCO_MONE_BASE, @VSTI_CAMB_BASE, @VSTI_CAMB_BASE,                       
    @VNFA_CAMB,  @VDFE_ASTO_CNTB, @CNIM_MVTO_ORIG, 'P', @CNIM_MVTO_ORIG OUTPUT                            
    End                              
    If @CSTI_OPER_CNTB = 'CAR'                              
    Begin                              
     Select @VNIM_GAST_ORIG = Round(@VNIM_GAST_ORIG + @CNIM_MVTO_ORIG,2)                              
     --*** select importe contabilidad                    
     Select @VNIM_GAST_CONT = Round(@VNIM_GAST_CONT + @CNIM_MVTO_CNTB,2)                                    
     --*** select importe contabilidad                    
    End                              
    Else If @CSTI_OPER_CNTB = 'ABO'                              
    Begin                              
     Select @VNIM_GAST_ORIG = Round(@VNIM_GAST_ORIG - @CNIM_MVTO_ORIG,2)                              
     --*** select importe contabilidad                    
     Select @VNIM_GAST_CONT = Round(@VNIM_GAST_CONT - @CNIM_MVTO_CNTB,2)                
     --*** select importe contabilidad                    
    End                              
   End -- (If @VSCO_MONE_BASE IS NOT Null)                  
  End -- ( If @CSID_CNTA = '010' )                          
                        
                             
Fetch CU_TXMVTO_CNTB_Q20_1 into                               
    @CDFE_DOCU, @CSTI_DOCU_CNTB, @CSNU_DOCU, @CSCO_UNID, @CSCO_OPRC, @CNNU_MESE,                               
    @CSNU_ASTO, @CSTI_AUXI_EMPR, @CSCO_AUXI, @CSCN_CNTB_EMPR, @CSTI_OPER_CNTB,                               
    @CSCO_MONE, @CNFA_CAMB, @CNIM_MVTO_ORIG, @CNIM_MVTO_CNTB, @CSID_CNTA,                              
    @CNPO_REN1, @CNPO_REN2, @CNPO_IGV1,      @CNPO_IGV2,      @CSTI_DOCU_DETR,     
 @CSNU_DOCU_DETR, @CDFE_DOCU_DETR,        @CSCO_EMPR,   @CDFE_ASTO_CNTB,     
 @CSTI_CAMB, @CSST_CNTA_CAMB, @CDFE_DOCU_VENC, @CSST_COMP, @CSTI_DOCU_REFE,     
 @CSNU_DOCU_REFE, @CDFE_DOCU_REFE    
                              
 End                              
 Close CU_TXMVTO_CNTB_Q20_1                              
 Deallocate CU_TXMVTO_CNTB_Q20_1                              
                              
If @ISTI_INFO = 'ORI'                              
Begin            
   If @ISTI_REPO = 'ANA'                    
   Begin                              
     if @ISTI_ORDE_REPO = 'VOU'                  
       Select @ISCO_EMPR, convert(varchar(10),FE_DOCU,103), TI_DOCU_SUNA, TI_DOCU_CNTB, NO_DOCU, NU_DOCU,                               
       CO_UNID_CNTB, CO_OPRC, NU_ASTO, CO_PROV, NO_CORT_PROV, NU_DOCU_SUNA, CO_MONE, IM_INAF_ORIG,                      
       IM_AFEC_ORIG, IM_IIGV_ORIG, IM_TOTA_ORIG, IM_INAF_CNTB, IM_AFEC_CNTB + IM_BASE_NGRA + IM_BASE_SDCF,     
    IM_IIGV_CNTB + IM_IIGV_NGRA + IM_IIGV_SDCF, IM_TOTA_CNTB, FA_CAMB, ST_RETE_AUXI, ST_RETE_DOCU,     
    @VNIM_MAXI_NRET,ST_RETE_BCON,ST_STAT,ST_NDEB,ROUND(PO_IMPT,2),FE_VENC_PAGO--, ST_DETR                              
       From #TWMVTO_CNTB_Q55_1                              
       Order By TI_DOCU_CNTB, NU_ASTO, FE_DOCU, NU_DOCU                              
     Else if @ISTI_ORDE_REPO = 'FEC'                              
    Select @ISCO_EMPR, convert(varchar(10),FE_DOCU,103), TI_DOCU_SUNA, TI_DOCU_CNTB, NO_DOCU, NU_DOCU,                               
       CO_UNID_CNTB, CO_OPRC, NU_ASTO, CO_PROV, NO_CORT_PROV, NU_DOCU_SUNA, CO_MONE, IM_INAF_ORIG,                               
       IM_AFEC_ORIG, IM_IIGV_ORIG, IM_TOTA_ORIG, IM_INAF_CNTB, IM_AFEC_CNTB + IM_BASE_NGRA + IM_BASE_SDCF,     
       IM_IIGV_CNTB + IM_IIGV_NGRA + IM_IIGV_SDCF,    
       IM_TOTA_CNTB, FA_CAMB, ST_RETE_AUXI, ST_RETE_DOCU, @VNIM_MAXI_NRET,ST_RETE_BCON,ST_STAT,ST_NDEB, ROUND(PO_IMPT,2),FE_VENC_PAGO--, ST_DETR                              
       From #TWMVTO_CNTB_Q55_1                              
       Order By TI_DOCU_CNTB, FE_DOCU, NU_ASTO, NU_DOCU                              
   End                              
   Else if @ISTI_REPO = 'RES'                              
   Begin                
     Select Max(TI_DOCU_SUNA), TI_DOCU_CNTB, Max(NO_DOCU), sum(IM_INAF_ORIG),                              
     Isnull(sum(Isnull(IM_AFEC_ORIG, 0)), 0), Isnull(sum(Isnull(IM_IIGV_ORIG, 0)), 0),                      
     Isnull(sum(Isnull(IM_TOTA_ORIG, 0)), 0), Isnull(sum(Isnull(IM_INAF_CNTB, 0)), 0),                               
     Isnull(sum(Isnull(IM_AFEC_CNTB, 0)), 0) + Isnull(sum(Isnull(IM_BASE_NGRA, 0)), 0) + Isnull(sum(Isnull(IM_BASE_SDCF, 0)), 0),    
  Isnull(sum(Isnull(IM_IIGV_CNTB, 0)), 0) + Isnull(sum(Isnull(IM_IIGV_NGRA, 0)), 0) + Isnull(sum(Isnull(IM_IIGV_SDCF, 0)), 0),    
     Isnull(sum(Isnull(IM_TOTA_CNTB, 0)), 0)                           
     From #TWMVTO_CNTB_Q55_1                              
     Group by TI_DOCU_CNTB                              
     Order By TI_DOCU_CNTB                              
   End                              
End    
Else if @ISTI_INFO = 'OFI'                              
Begin                              
   if @ISTI_ORDE_REPO = 'VOU'                              
     Select @ISCO_EMPR, CO_UNID_CNTB, CO_OPRC, NU_ASTO, convert(varchar(10),FE_DOCU,103), convert(varchar(10), FE_VENC_PAGO, 103),     
		TI_DOCU_SUNA, TI_DOCU_CNTB,     
		NO_DOCU, CASE WHEN ST_NDOM = '1' Then '' Else NU_DOCU End, CO_DOCU_SUNA, NU_DOCU_SUNA, CO_PROV, NO_CORT_PROV,     
		CO_MONE, IM_AFEC_CNTB, IM_IIGV_CNTB, IM_BASE_NGRA, IM_IIGV_NGRA, IM_BASE_SDCF, IM_IIGV_SDCF, IM_INAF_CNTB,     
		IM_OTRO_TRIB, IM_TOTA_CNTB, CASE WHEN ST_NDOM = '1' Then TI_DOCU_CNTB Else '' End,     
  CASE WHEN ST_NDOM = '1' Then NU_DOCU Else NULL End, NU_DOCU_DETR, convert(varchar(10), FE_DOCU_DETR, 103),     
   FA_CAMB, convert(varchar(10), FE_DOCU_REFE, 103), TI_DOCU_SURE, NU_DOCU_REFE,      
     ST_RETE_AUXI, ST_RETE_DOCU, @VNIM_MAXI_NRET, ST_RETE_BCON, ST_STAT, ST_NDEB    
     From #TWMVTO_CNTB_Q55_1                   
     Order By TI_DOCU_CNTB, CO_UNID_CNTB, CO_OPRC, NU_ASTO, FE_DOCU, TI_DOCU_SUNA, NU_DOCU                              
   Else if @ISTI_ORDE_REPO = 'FEC'    
     Select @ISCO_EMPR, CO_UNID_CNTB, CO_OPRC, NU_ASTO, convert(varchar(10),FE_DOCU,103),     
     convert(varchar(10), FE_VENC_PAGO, 103), TI_DOCU_SUNA, TI_DOCU_CNTB,     
     NO_DOCU, CASE WHEN ST_NDOM = '1' Then NULL Else NU_DOCU End, CO_DOCU_SUNA, NU_DOCU_SUNA, CO_PROV, NO_CORT_PROV,     
     CO_MONE, IM_AFEC_CNTB, IM_IIGV_CNTB, IM_BASE_NGRA, IM_IIGV_NGRA, IM_BASE_SDCF, IM_IIGV_SDCF, IM_INAF_CNTB,     
     IM_OTRO_TRIB, IM_TOTA_CNTB, CASE WHEN ST_NDOM = '1' Then TI_DOCU_SUNA Else '' End,     
     CASE WHEN ST_NDOM = '1' Then NU_DOCU Else '' End, NU_DOCU_DETR, convert(varchar(10), FE_DOCU_DETR, 103),     
     FA_CAMB, convert(varchar(10), FE_DOCU_REFE, 103), TI_DOCU_SURE, NU_DOCU_REFE,      
     ST_RETE_AUXI, ST_RETE_DOCU, @VNIM_MAXI_NRET, ST_RETE_BCON, ST_STAT, ST_NDEB    
     From #TWMVTO_CNTB_Q55_1    
     Order By TI_DOCU_CNTB, 5, CO_UNID_CNTB, CO_OPRC, NU_ASTO, TI_DOCU_SUNA, NU_DOCU    
End    
                              
/*----------------------------------------- Fin ------------------------------------------------------*/    




GO
